Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Node / ReticulumProjects / MeshChatX.git / files / meshchatx / src / frontend / js / settings / batterySaverBitrateApply.js

Displaying Raw • Download


meshchatx/src/frontend/js/settings/batterySaverBitrateApply.js bce42bcdce0e7d2c6d78228e864a4cd1d974cc82 (bce42bcd) Text, 2.59 KB

T8b949e// SPDX-License-Identifier: 0BSD AND MIT

Tff7b72import Tb4b4b4{ Te6edf3buildBitrateApplyPayloadTb4b4b4, Te6edf3loadBatterySaverPrefsTb4b4b4, Te6edf3saveBatterySaverPrefs Tb4b4b4} Tff7b72from Ta5d6ff"./batterySaverPrefs.js"Tb4b4b4;

T8b949e/**
* Apply configured battery-saver bitrate caps and optionally reload RNS.
* @param {{ api?: { get: Function, post: Function }, reload?: boolean }} [opts]
* @returns {Promise<{ updated: string[], reloaded: boolean }>}
*/
Tff7b72export Tff7b72async Tff7b72function Te6edf3applyBatterySaverBitrateLimitsTb4b4b4(Te6edf3opts Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3api Tff7b72= Te6edf3optsTb4b4b4.Te6edf3api Tff7b72|| Tb4b4b4(Tff7b72typeof Tffa657window Tff7b72!== Ta5d6ff"undefined" Tff7b72? Tffa657windowTb4b4b4.Te6edf3api Tff7b72: Tff7b72nullTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3apiTb4b4b4) Tb4b4b4{
Tff7b72throw Tff7b72new Tf85149ErrorTb4b4b4(Ta5d6ff"API client unavailable"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3prefs Tff7b72= Te6edf3loadBatterySaverPrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3prefsTb4b4b4.Te6edf3applyInterfaceBitrateLimitsTb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{ Te6edf3updatedTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4, Te6edf3reloadedTff7b72: Tff7b72false Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3limits Tff7b72= Te6edf3prefsTb4b4b4.Te6edf3interfaceBitrateLimits Tff7b72|| Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72if Tb4b4b4(Tffa657ObjectTb4b4b4.Te6edf3keysTb4b4b4(Te6edf3limitsTb4b4b4)Tb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{ Te6edf3updatedTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4, Te6edf3reloadedTff7b72: Tff7b72false Tb4b4b4}Tb4b4b4;
Tb4b4b4}

Tff7b72const Te6edf3listResp Tff7b72= Tff7b72await Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/reticulum/interfaces"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3interfaces Tff7b72= Te6edf3listRespTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3interfaces Tff7b72|| Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72const Tb4b4b4{ Te6edf3bitratesTb4b4b4, Te6edf3previous Tb4b4b4} Tff7b72= Te6edf3buildBitrateApplyPayloadTb4b4b4(Te6edf3interfacesTb4b4b4, Te6edf3limitsTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tffa657ObjectTb4b4b4.Te6edf3keysTb4b4b4(Te6edf3bitratesTb4b4b4)Tb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{ Te6edf3updatedTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4, Te6edf3reloadedTff7b72: Tff7b72false Tb4b4b4}Tb4b4b4;
Tb4b4b4}

Tff7b72const Te6edf3reload Tff7b72= Te6edf3optsTb4b4b4.Te6edf3reload Tff7b72!== Tff7b72falseTb4b4b4;
Tff7b72const Te6edf3resp Tff7b72= Tff7b72await Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/reticulum/interfaces/bitrates"Tb4b4b4, Tb4b4b4{
Te6edf3bitratesTb4b4b4,
Te6edf3reloadTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3saveBatterySaverPrefsTb4b4b4(Tb4b4b4{
Te6edf3interfaceBitratePreviousTff7b72: Tb4b4b4{
Tb4b4b4...Te6edf3prefsTb4b4b4.Te6edf3interfaceBitratePreviousTb4b4b4,
Tb4b4b4...Te6edf3previousTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72return Tb4b4b4{
Te6edf3updatedTff7b72: Te6edf3respTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3updated Tff7b72|| Tffa657ObjectTb4b4b4.Te6edf3keysTb4b4b4(Te6edf3bitratesTb4b4b4)Tb4b4b4,
Te6edf3reloadedTff7b72: Tffa657BooleanTb4b4b4(Te6edf3respTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3reloadedTb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}

T8b949e/**
* Restore bitrates saved before the last apply, then reload RNS.
* @param {{ api?: { post: Function }, reload?: boolean }} [opts]
*/
Tff7b72export Tff7b72async Tff7b72function Te6edf3restoreBatterySaverBitrateLimitsTb4b4b4(Te6edf3opts Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3api Tff7b72= Te6edf3optsTb4b4b4.Te6edf3api Tff7b72|| Tb4b4b4(Tff7b72typeof Tffa657window Tff7b72!== Ta5d6ff"undefined" Tff7b72? Tffa657windowTb4b4b4.Te6edf3api Tff7b72: Tff7b72nullTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3apiTb4b4b4) Tb4b4b4{
Tff7b72throw Tff7b72new Tf85149ErrorTb4b4b4(Ta5d6ff"API client unavailable"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3prefs Tff7b72= Te6edf3loadBatterySaverPrefsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3previous Tff7b72= Te6edf3prefsTb4b4b4.Te6edf3interfaceBitratePrevious Tff7b72|| Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72if Tb4b4b4(Tffa657ObjectTb4b4b4.Te6edf3keysTb4b4b4(Te6edf3previousTb4b4b4)Tb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{ Te6edf3updatedTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4, Te6edf3reloadedTff7b72: Tff7b72false Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3reload Tff7b72= Te6edf3optsTb4b4b4.Te6edf3reload Tff7b72!== Tff7b72falseTb4b4b4;
Tff7b72const Te6edf3resp Tff7b72= Tff7b72await Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/reticulum/interfaces/bitrates"Tb4b4b4, Tb4b4b4{
Te6edf3bitratesTff7b72: Te6edf3previousTb4b4b4,
Te6edf3reloadTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3saveBatterySaverPrefsTb4b4b4(Tb4b4b4{ Te6edf3interfaceBitratePreviousTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72return Tb4b4b4{
Te6edf3updatedTff7b72: Te6edf3respTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3updated Tff7b72|| Tffa657ObjectTb4b4b4.Te6edf3keysTb4b4b4(Te6edf3previousTb4b4b4)Tb4b4b4,
Te6edf3reloadedTff7b72: Tffa657BooleanTb4b4b4(Te6edf3respTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3reloadedTb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────